/*     */ package dm.jdbc.driver;
/*     */ 
/*     */ import dm.jdbc.desc.ColumnDesc;
/*     */ import dm.jdbc.desc.DTypeInfo;
/*     */ import dm.sql.TypeDescriptor;
/*     */ import java.sql.SQLException;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ public class DmdbColumn
/*     */   implements Cloneable
/*     */ {
/*  30 */   private ColumnDesc m_desc = new ColumnDesc();
/*  31 */   private DmdbConnection_bs m_conn = null;
/*     */   
/*     */   public DmdbColumn(DmdbConnection_bs conn) {
/*  34 */     this.m_conn = conn;
/*     */   }
/*     */   
/*     */   public ColumnDesc getDesc() {
/*  38 */     return this.m_desc;
/*     */   }
/*     */   
/*     */   public int checkComplexType(byte[] buf, int offset) throws SQLException
/*     */   {
/*  43 */     if (!this.m_desc.isComplexType()) {
/*  44 */       return offset;
/*     */     }
/*  46 */     TypeDescriptor strDesc = new TypeDescriptor(this.m_conn);
/*  47 */     offset = strDesc.unpack(buf, offset);
/*     */     
/*  49 */     this.m_desc.setTypeDescriptor(strDesc);
/*     */     
/*  51 */     return offset;
/*     */   }
/*     */   
/*     */   public int getDisplaySize() {
/*  55 */     return DmdbType.displaySizeByJdbcType(getSqlType(), this.m_desc.getPrec(), 
/*  56 */       this.m_desc.getDTypeInfo().getLocalScale());
/*     */   }
/*     */   
/*     */   public int getSqlPrec() {
/*  60 */     int rPrec = 0;
/*  61 */     switch (this.m_desc.getDType()) {
/*     */     case 20: 
/*     */     case 21: 
/*  64 */       rPrec = this.m_desc.getScale() >> 4 & 0xF;
/*  65 */       break;
/*     */     
/*     */     default: 
/*  68 */       rPrec = DmdbType.CPrecToJdbcPrec(getSqlType(), this.m_desc.getPrec(), 
/*  69 */         this.m_desc.getDTypeInfo().getLocalScale());
/*     */     }
/*     */     
/*  72 */     return rPrec;
/*     */   }
/*     */   
/*     */   public int getSqlScale() {
/*  76 */     int rScale = this.m_desc.getScale();
/*  77 */     switch (this.m_desc.getDType()) {
/*     */     case 20: 
/*     */     case 21: 
/*  80 */       rScale &= 0xF;
/*  81 */       break;
/*     */     
/*     */     case 12: 
/*  84 */       if (rScale == 5)
/*  85 */         rScale = 0;
/*  86 */       break;
/*     */     
/*     */     default: 
/*  89 */       rScale = this.m_desc.getDTypeInfo().getLocalScale();
/*     */     }
/*     */     
/*  92 */     return rScale;
/*     */   }
/*     */   
/*     */   public int getSqlType() {
/*  96 */     if (this.m_desc.isComplexType()) {
/*  97 */       return 2002;
/*     */     }
/*  99 */     return DmdbType.dtypeToSqlType(this.m_desc.getDType(), this.m_desc.getTypeName());
/*     */   }
/*     */   
/*     */   public String getTypeName() throws SQLException {
/* 103 */     if (this.m_desc.isComplexType()) {
/* 104 */       return this.m_desc.getTypeDescriptor().getFulName();
/*     */     }
/* 106 */     return this.m_desc.getTypeName();
/*     */   }
/*     */   
/*     */   public static int getMaxTupleLen(DmdbColumn[] cols, int maxRowSize)
/*     */   {
/* 111 */     int tmp_tuple_len = 0;
/*     */     
/* 113 */     for (short i = 0; i < cols.length; i = (short)(i + 1)) {
/* 114 */       int dType = cols[i].getDesc().getDTypeInfo().getDType();
/* 115 */       if ((dType == 12) || (dType == 19)) {
/* 116 */         tmp_tuple_len = maxRowSize;
/* 117 */         break;
/*     */       }
/* 119 */       tmp_tuple_len += cols[i].getDesc().getPrec();
/*     */     }
/*     */     
/*     */ 
/* 123 */     if (tmp_tuple_len > maxRowSize) {
/* 124 */       tmp_tuple_len = maxRowSize;
/*     */     }
/*     */     
/* 127 */     tmp_tuple_len += 10 + 2 * cols.length + 8;
/*     */     
/* 129 */     return tmp_tuple_len;
/*     */   }
/*     */   
/*     */   public Object clone() {
/* 133 */     DmdbColumn col = null;
/*     */     try {
/* 135 */       col = (DmdbColumn)super.clone();
/*     */     } catch (CloneNotSupportedException e) {
/* 137 */       e.printStackTrace();
/*     */     }
/*     */     
/* 140 */     return col;
/*     */   }
/*     */ }


/* Location:              D:\Program Files\DBMS_20150813\jdbc\Dm7JdbcDriver17.jar!\dm\jdbc\driver\DmdbColumn.class
 * Java compiler version: 2 (46.0)
 * JD-Core Version:       0.7.1
 */